/**
 * 给你一个整数n,找出并返回第n个丑数。
 * 丑数是只包含质因数2、3、5的正整数。
*/
function uglyNumber(n) {
    const heap = [1];
    const result = [1];
    const UGLY = [2, 3, 5];
    const map = {};
    let i = 0;
    while (i <= n) {
        const mul = i % 3;
        const res = heap[0] * UGLY[mul];
        if (!map[res]) {
            result.push(res);
            heap.push(res);
            heap.sort((a, b) => a - b);
            map[heap[0] * UGLY[mul]] = true;
        }
        if (mul === 2) {
            heap.shift();
        }
        i++;
    }
    result.sort((a, b) => a - b);
    return result[n - 1];
}

console.log(uglyNumber(10));